#!/usr/bin/env python
from lxml import etree
import sys
import getopt
import xml.sax
sys.path.append('../../sincronizacion/')
sys.path.append('../Database/')
sys.path.append('../XML/')
import ConnectionDB as conn 
import Start as start
XML_SOURCE = '../XML/'
SERVER = 1
CLIENT = 0
tipo = None


def uso():
	print "pyReport.py -i <xml>"	

try:
	opts, args = getopt.getopt(sys.argv[1:], "hi:t:v", ["help", "input_xml=", "type S o C"])
except getopt.GetoptError, err:
	print str(err)
	uso()
	exit(2)
num_args = 0
xml_input = None
verbose = False
for o, a in opts:
	if o == "-v":
		verbose = True
	elif o in ("-h", "--help"):
		uso()
		exit()
	elif o in ("-i", "--input_xml"):
		xml_input = XML_SOURCE + a
		num_args = num_args + 1
	elif o in ("-t", "--type(S o C)"):
		if a == 'S':
			tipo = SERVER
		else:
			tipo = CLIENT	
		
	else:
		assert False, "Opci\xc3n desconocida".encode('latin-1')

if not num_args == 1:
	print "El numero de parametros de entrada es incorrecto"
	uso()
	exit(2)



try:
	archivo_xml = open(xml_input, "r")
except IOError:
	print "El archivo XML no pudo ser encontrado. Intente de nuevo"
	exit(2)

try:
	parse = etree.XMLParser(dtd_validation=True,attribute_defaults=True)
	xml_etree = etree.parse(xml_input,parse)
except etree.XMLSyntaxError,e:
	print "El xml no es valido: %s" % e
except etree.DTDParseError, d:
	print "El xml no es valido: %s" % d

# Raiz del arbol
root = xml_etree.getroot()

# Inicializando parametros de conexion a la base de datos
connection  = conn.connectionDB(root)

# Creando estructuras necesarias para la sincronizacion
structure  = start.CreateStructure() 
structure.init(list(root),connection,tipo)


